package cn.hgd11.security.enums;

/**
 * @author wangkaige
 */
public enum GlobalCodeEnum {

    // ========== 客户端错误段 4xx==========
    /**
     * {@code 429 Too Many Requests}.
     *
     * @see <a href="http://tools.ietf.org/html/rfc6585#section-4">Additional HTTP Status Codes</a>
     */
    TOO_MANY_REQUESTS("429", "Too Many Requests"),
    BAD_REQUEST("400", "请求参数不正确"),
    UNAUTHORIZED("401", "账号未登录"),
    FORBIDDEN("403", "没有该操作权限"),
    NOT_FOUND("404", "请求未找到"),
    METHOD_NOT_ALLOWED("405", "请求方法不正确"),
    LOCKED("423", "请求失败，请稍后重试"),


    // ========== 服务端错误段 5xx==========
    INTERNAL_SERVER_ERROR("500", "系统异常"),

    // ========== 自定义错误段 ==========
    UNKNOWN_ERROR("999", "未知异常，请稍后重试"),

    // ==========成功请求 2xx=====================
    /**
     * 全局返回码定义 - 0000开头
     */
    GL_SUCC_200("200", "成功");

    /**
     * 编码
     */
    private String code;

    /**
     * 描述
     */
    private String desc;


    GlobalCodeEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    /**
     * 根据编码获取枚举类型
     *
     * @param code 编码
     * @return
     */
    public static GlobalCodeEnum getByCode(String code) {
        //判空
        if (code == null) {
            return null;
        }
        //循环处理
        GlobalCodeEnum[] values = GlobalCodeEnum.values();
        for (GlobalCodeEnum value : values) {
            if (value.getCode().equals(code)) {
                return value;
            }
        }
        return null;
    }

    public String getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

}
